package com.earthchen.decoder;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;


/**
 * @author: EarthChen
 * @date: 2018/05/02
 */
public class ServerHandler extends ChannelInboundHandlerAdapter {

    /**
     * 需要处理所有接收到的数据，所以你重写了 channelRead()
     * 方法。在这个服务器应用程序中，你将数据简单地回送给了远程节点。
     *
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//        ByteBuf in = (ByteBuf) msg;
//        System.out.println("Server received: " + in.toString(CharsetUtil.UTF_8));
//        // 将接收到的消息写给发送者，而不冲刷出站消息
//        ctx.write(in);
        System.out.println((Integer) msg * 2);
    }


    /**
     * 允许你对 Throwable 的任何子类型做出反应， 在这里你
     * 记录了异常并关闭了连接。虽然一个更加完善的应用程序也许会尝试从异常中恢复，但在这个场
     * 景下，只是通过简单地关闭连接来通知远程节点发生了错误。
     *
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        // 关闭channel
        ctx.close();
    }
}
